using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Entidades;

namespace Datos
{
    public class GeneroD
    {
        DBAccess dba;

    #region CONSTRUCTOR
        public GeneroD()
        { 
            this.dba = new DBAccess();
        }
    #endregion

    #region Consultar
        public DataTable GeneroConsultar(GeneroE genero)
        {
            try
            {
                genero.Preparar();
                dba.Parametros.Clear();

                CargarParametros(genero);

                return dba.ExecuteDataTable("GeneroConsultar");
            }
            catch (Exception ex)
            {   
                throw ex;
            }
        }

        public DataTable GeneroConsultar()
        {
            try
            {
                GeneroE genero = new GeneroE();
                genero.Clear();

                return this.GeneroConsultar(genero);
            }
            catch (Exception)
            {                
                throw;
            }
        }

        public GeneroE GeneroConsultar(Int32 id)
        {
            try
            {
                GeneroE genero = new GeneroE();
                genero.Genero = id;
                DataTable dt = this.GeneroConsultar(genero);

                genero = new GeneroE(dt.Rows[0]);

                return genero;
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion

    #region INSERTAR
        public void GeneroInsertar(GeneroE origen)
        {
            try
            {
                dba.Parametros.Clear();
                CargarParametros(origen);

                dba.ExecuteNonQuery("GeneroInsertar");
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion

    #region MODIFICAR
        public void GeneroModificar(GeneroE genero)
        {
            try
            {
                dba.Parametros.Clear();
                CargarParametros(genero);
                dba.ExecuteNonQuery("GeneroModificar");
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion

    #region BORRAR
        public void GeneroEliminar(GeneroE genero)
        {
            try
            {
                dba.Parametros.Clear();
                CargarParametros(genero);
                dba.ExecuteNonQuery("GeneroEliminar");            
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion

    #region Metodos
        private void CargarParametros(GeneroE genero)
        {
            try
            {
                this.dba.Parametros.Add("@idGenero", genero.Genero);
                this.dba.Parametros.Add("@descripcion", genero.Descripcion);
            }
            catch (Exception)
            {
                throw;
            }
        }

        public Boolean ExisteId(String id)
        {
            try
            {
                dba.Parametros.Clear();
                dba.Parametros.Add("@idGenero", id);
                DataTable dt = dba.ExecuteDataTable("GeneroConsultar");
                if (dt.Rows.Count != 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion    
        
    }
}
